package controller

import (
	"fmt"
	"net/http"
	"os"
	"strconv"
	"time"

	"github.com/gin-gonic/gin"
)

type uploadCtl struct{}

var Upload = new(uploadCtl)

var urlImage = "./public/tempImage/"

func (c *uploadCtl) UploadImage(ctx *gin.Context) {
	fmt.Println("上传图片")
	// 获取上传的文件
	file, err := ctx.FormFile("file")
	if err != nil {
		ctx.JSON(http.StatusOK, gin.H{
			"Code": 1,
			"Msg":  "上传失败",
		})
		return
	}
	// 判断文件夹是否存在

	// 文件名重命名,时间戳+文件名
	t1 := strconv.Itoa(int(time.Now().Unix()))
	file.Filename = t1 + ".png"
	// 上传文件至指定目录
	ctx.SaveUploadedFile(file, urlImage+file.Filename)
	// 返回结果
	ctx.JSON(http.StatusOK, gin.H{
		"Code":     0,
		"FileName": t1,
		"FilePath": file.Filename,
		"Msg":      "上传成功",
	})
}

// 文件删除
type DeleteReq struct {
	FilePath string `json:"filePath"`
}

func (c *uploadCtl) DeleteImage(ctx *gin.Context) {
	// 获取文件名
	// fileName := ctx.Request.FormValue("filePath")
	var req DeleteReq
	ctx.BindJSON(&req)
	fileName := req.FilePath
	// 删除文件
	err := os.Remove(urlImage + fileName)
	if err != nil {
		ctx.JSON(http.StatusOK, gin.H{
			"Code": 1,
			"Msg":  "删除失败",
		})
		return
	}
	// 返回结果
	ctx.JSON(http.StatusOK, gin.H{
		"Code": 0,
		"Msg":  "删除成功",
	})
}

func (c *uploadCtl) GetImage(ctx *gin.Context) {
	fileDir := "C:/Users/王春雨/Desktop/project/viteProject/public/"
	// 获取文件夹下所有文件
	files, err := os.ReadDir(fileDir)
	if err != nil {
		ctx.JSON(http.StatusOK, gin.H{
			"Code": 1,
			"Msg":  "获取失败",
		})
		return
	}
	// 返回结果
	var res []string
	for _, file := range files {
		res = append(res, file.Name())
	}

	ctx.JSON(http.StatusOK, gin.H{
		"Code": 0,
		"Data": res,
		"Msg":  "获取成功",
	})
}
